﻿namespace Pp.DbCreate
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Core.Extentions;
    using Ilgera.TMS.UI.Web.Helpers;
    using Pp.Core.FluentNH;
    using Domain.Model;
    using NHibernate;

    internal class Program
    {
        private static readonly IList<User> UserList = new List<User>();
        private static ISession _session;

        private static void Main(string[] args)
        {
            const string adlar =
                "Aba,Abak,Abaka,Abakan,Abakay,Abar,Abay,Abı,Abılay,Abluç,Abşar,Açığ,Açık,Açuk,Adalan,Adaldı,Adalmış,Adar,Adaş,Adberilgen,Adıgüzel,Adık,Adıkutlu,Adıkutlutaş,Adlı,Adlıbeğ,Adraman,Adsız,Afşar,Afşın,Ağabay,Ağakağan,Ağalak,Ağlamış,Ak,Akaş,Akata,Akbaş,Akbay,Akboğa,Akbörü,Akbudak,Akbuğra,Akbulak,Akça,Akçakoca,Akçora,Akdemir,Akdoğan,Akı,Akıbudak,Akım,Akın,Akınçı,Akkun,Akkunlu,Akkurt,Akkuş,Akpıra,Aksungur,Aktan,Al,Ala,Alaban,Alabörü,Aladağ,Aladoğan,Alakurt,Alayunt,Alayuntlu,Aldemir,Aldıgerey,Aldoğan,Algu,Alımga,Alka,Alkabölük,Alkaevli,Alkan,Alkaşı,Alkış,Alp,Alpagut,Alpamış,Alparsbeğ,Alparslan,Alpata,Alpay,Alpaya,Alpaykağan,Alpbamsı,Alpbilge,Alpdirek,Alpdoğan,Alper,Alperen,Alpertunga,Alpgerey,Alpış,Alpilig,Alpkara,Alpkutlu,Alpkülük,Alpşalçı,Alptegin,Alptuğrul,Alptunga,Alpturan,Alptutuk,Alpuluğ,Alpurungu,Alpurungututuk,Alpyörük,Altan,Altankağan,Altankan,Altay,Altın,Altınkağan,Altınkan,Altınoba,Altıntamgan,Altıntamgantarkan,Altıntarkan,Altıntay,Altmışkara,Altuga,Amaç,Amrak,Amul,Ançuk,Andarıman,Anıl,Ant,Apa,Apak,Apatarkan,Aprançur,Araboğa,Arademir,Aral,Arbay,Arbuz,Arçuk,Ardıç,Argıl,Argu,Argun,Arı,Arıboğa,Arık,Arıkağan,Arıkdoruk,Arınç,Arkın,Arkış,Armağan,Arnaç,Arpat,Arsal,Arsıl,Arslan,Arslanargun,Arslanbörü,Arslansungur,Arslantegin,Arslanyabgu,Arşun,Artıınal,Artuk,Artukaç,Artut,Aruk,Asartegin,Asığ,Asrı,Asuğ,Aşan,Aşanboğa,Aşantuğrul,Aşantudun,Aşıkbulmuş,Aşkın,Aştaloğul,Aşuk,Ataç,Atakağan,Atakan,Atalan,Ataldı,Atalmış,Ataman,Atasagun,Atasu,Atberilgen,Atıgay,Atıkutlu,Atıkutlutaş,Atıla,Atılgan,Atım,Atımer,Atış,Atlı,Atlıbeğ,Atlıkağan,Atmaca,Atsız,Atunçu,Avar,Avluç,Avşar,Ay,Ayaçı,Ayas,Ayaş,Ayaz,Aybalta,Ayban,Aybars,Aybeğ,Aydarkağan,Aydemir,Aydın,Aydınalp,Aydoğan,Aydoğdu,Aydoğmuş,Aygırak,Ayıtmış,Ayız,Ayızdağ,Aykağan,Aykan,Aykurt,Ayluç,Ayluçtarkan,Ayma,Ayruk,Aysılığ,Aytak,Ayyıldız,Azak,Azban,Azgan,Azganaz,Azıl,B,Babır,Babur,Baçara,Baççayman,Baçman,Badabul,Badruk,Badur,Bağa,Bağaalp,Bağaışbara,Bağan,Bağaşatulu,Bağatarkan,Bağatengrikağan,Bağatur,Bağaturçigşi,Bağaturgerey,Bağaturipi,Bağatursepi,Bağış,Bağtaş,Bakağul,Bakır,Bakırsokum,Baksı,Bakşı,Balaban,Balaka,Balakatay,Balamır,Balçar,Baldu,Balkık,Balta,Baltacı,Baltar,Baltır,Baltur,Bamsı,Bangu,Barak,Baraktöre,Baran,Barbeğ,Barboğa,Barbol,Barbulsun,Barça,Barçadoğdu,Barçadoğmuş,Barçadurdu,Barçadurmuş,Barçan,Barçatoyun,Bardıbay,Bargan,Barımtay,Barın,Barkan,Barkdoğdu,Barkdoğmuş,Barkdurdu,Barkdurmuş,Barkın,Barlas,Barlıbay,Barmaklak,Barmaklı,Barman,Bars,Barsbeğ,Barsboğa,Barsgan,Barskan,Barsurungu,Bartu,Basademir,Basan,Basanyalavaç,Basar,Basat,Baskın,Basmıl,Bastı,Bastuğrul,Basu,Basut,Başak,Başbuğ,Başçı,Başgan,Başkırt,Başkurt,Baştar,Batrak,Batu,Batuk,Batur,Baturalp,Bay,Bayançar,Bayankağan,Bayat,Bayazıt,Baybars,Baybayık,Baybiçen,Bayboğa,Baybora,Baybüre,Baydar,Baydemir,Baydur,Bayık,Bayınçur,Bayındır,Baykal,Baykara,Baykoca,Baykuzu,Baymünke,Bayna,Baynal,Baypüre,Bayrı,Bayraç,Bayrak,Bayram,Bayrın,Bayruk,Baysungur,Baytara,Baytaş,Bayunçur,Bayur,Bayurku,Bayutmuş,Bayuttu,Bazır,Beçeapa,Beçkem,Beğ,Beğarslan,Beğbars,Beğbilgeçikşin,Beğboğa,Beğçur,Beğdemir,Beğdilli,Beğdurmuş,Beğkulu,Beğtaş,Beğtegin,Beğtüzün,Begi,Begil,Begine,Begitutuk,Beglen,Begni,Bek,Bekazıl,Bekbekeç,Bekeç,Bekeçarslan,Bekeçarslantegin,Bekeçtegin,Beker,Beklemiş,Bektür,Belçir,Belek,Belgi,Belgüc,Beltir,Bengi,Bengü,Benlidemir,Berdibeğ,Berendey,Bergü,Berginsenge,Berk,Berke,Berkiş,Berkyaruk,Bermek,Besentegin,Betemir,Beyizçi,Beyrek,Beyrem,Bıçkı,Bıçkıcı,Bıdın,Bıtaybıkı,Bıtrı,Biçek,Bilge,Bilgebayunçur,Bilgebeğ,Bilgeçikşin,Bilgeışbara,Bilgeışbaratamgan,Bilgekağan,Bilgekan,Bilgekutluk,Bilgekülüçur,Bilgetaçam,Bilgetamgacı,Bilgetardu,Bilgetegin,Bilgetonyukuk,Bilgez,Bilgiç,Bilgin,Bilig,Biligköngülsengün,Bilik,Binbeği,Bindir,Boğa,Boğaç,Boğaçuk,Boldaz,Bolmuş,Bolsun,Bolun,Boncuk,Bongul,Bongulboğa,Bora,Boran,Borçul,Borlukçu,Bornak,Boyan,Boyankulu,Boylabağa,Boylabağatarkan,Boylakutlutarkan,Bozan,Bozbörü,Bozdoğan,Bozkurt,Bozkuş,Bozok,Bögde,Böge,Bögü,Bökde,Böke,Bölen,Bölükbaşı,Bönek,Bönge,Börü,Börübars,Börüsengün,Börteçine,Buçan,Buçur,Budağ,Budak,Budunlu,Buğday,Buğra,Buğrakarakağan,Bukak,Bukaktutuk,Bulaçapan,Bulak,Bulan,Buldur,Bulgak,Bulmaz,Bulmuş,Buluç,Buluğ,Buluk,Buluş,Bulut,Bumın,Bunsuz,Burçak,Burguçan,Burkay,Burslan,Burulday,Burulgu,Burunduk,Buşulgan,Butak,Butuk,Buyan,Buyançuk,Buyandemir,Buyankara,Buyat,Buyraç,Buyruç,Buyruk,Buzaç,Buzaçtutuk,Büdüs,Büdüstudun,Bügü,Bügdüz,Bügdüzemen,Büge,Büğübilge,Bükdüz,Büke,Bükebuyraç,Bükebuyruç,Bükey,Büktegin,Büküşboğa,Bümen,Bünül,Büre,Bürgüt,Bürkek,Bürküt,Bürlük,C,Cebe,Ceyhun,Cılasun,Ç,Çaba,Çabdar,Çablı,Çabuş,Çağan,Çağatay,Çağlar,Çağlayan,Çağrı,Çağrıbeğ,Çağrıtegin,Çağruk \tÇaka,Çakabeğ,Çakan,Çakı,Çakıdı,Çakın,Çakır,Çakırça,Çakırkağan,Çakırtunga,Çakırtungakağan,Çakmak,Çakoğul,Çaksırı,Çalapkulu,Çalayır,Çalık,Çalkara,Çamır,Çanbaşağa,Çandar,Çangır,Çansı,Çapa,Çapan,Çapar,Çapıtgan,Çapkun,Çapkunotuç,Çaplı,Çaptı,Çarır,Çaruk,Çaruklu,Çarun,Çasantuz,Çasır,Çavdar,Çavlı,Çavuş,Çaysu,Çebe,Çegre,Çekül,Çelgi,Çelik,Çengin,Çepni,Çeri,Çerik,Çetin,Çetinkaya,Çeykün,Çığan,Çığantonyukuk,Çığay,Çığbatar,Çığılbar,Çığır,Çılasın,Çılasun,Çımkara,Çınrak,Çırkuş,Çıtsu,Çibek,Çibekkargu,Çigşi,Çiğil,Çiğilarslan,Çikşin,Çilenti,Çinek,Çiner,Çizim,Çobayıkmış,Çocukbörü,Çocukbörüsengün,Çoğu,Çokaygır,Çokramayul,Çolman,Çolpan,Çomak,Çomul,Çonay,Çora,Çorabatur,Çoraman,Çorman,Çortan,Çosun,Çotul,Çoyun,Çökey,Çömen,Çubaş,Çubaldur,Çubu,Çuçu,Çuğlan,Çuka,Çuluk,Çupan,Çupka,Çur,Çurbağa,Çünük,D,Dağ,Dağkağan,Dakak,Damar,Delibalta,Delidumrul,Demir,Demirbakaç,Demirboğa,Demirdirek,Demirgen,Demirgüçü,Demirgüçüdirek,Demirkağan,Demirkan,Demirkazık,Demirkazuk,Demirtaş,Demirtayak,Demiryumruk,Dengizik,Deniz,Denizkağan,Dılmaç,Dikçe,Dike,Dikirmen,Dilek,Direk,Diri,Dirse,Dirsekağan,Dodurga,Doğan,Doğanarslan,Doğankaykan,Doğantegin,Doğantuğrul,Doğmuş,Doğu,Doğukağan,Doğukan,Doğulbay,Dokuzoğuz,Dolgan,Döğer,Dökmen,Dölek,Döndü,Döne,Duka,Dukakoca,Duman,Dumlupınar,Dumrul,Durak,Durmuş,Duru,Dururbunsuz,Duygu,Dürmen,E,Ebrekdemir,Ebren,Ebrük,Eçine,Eçinekür,Eçinetürçe,Edçü,Edebalı,Edige,Edil,Ediz,Eğrek,Eğrim,Egdeçin,Egemen,Ekim,Ekin,Elç,Elççurküçbars,Elçi,Elekül,Elkebulak,Elkin,Emen,Emre,Engürün,Engürünelçi,Engin,Engse,Engsekoca,Enik,Er,Eralp,Erankas,Erankastöşek,Erboğa,Erbüz,Erdem,Erdemkağan,Erdemkağanaltuga,Erdoğan,Erdoğdu,Erdoğmuş,Erduran,Erdurdu,Erdurmuş,Erem,Eren,Erentüz,Erenuluğ,Ergeldi,Ergelen,Ergelmiş,Ergenekon,Ergenekun,Eriker,Erinç,Erk,Erküz,Erkarslan,Erkin,Erkli,Ermen,Ersegün,Ersığın,Ersin,Ersungur,Ertaş,Ertaşyabgu,Ertegin,Ertokuş,Ertuğrul,Esen,Esenboğa,Esendemir,Esenkaya,Esim,Esinti,Esri,Eşkara,Etil,Etrek,Eygiş,Eyiz,Eylek,Eylik,Eylikkoca,Eymür,Ezgene,Ezgütegin,G,Gençek,Gerey,Gök,Gökalp,Gökboğa,Gökbörü,Gökbudak,Gökçe,Gökçek,Gökçen,Gökkağan,Gökmen,Gökşin,Göktaş,Göktuğ,Göktupulgan,Gönder,Göne,Görgü,Görün,Guz,Gülegen,Gülemen,Gülük,Gümüştegin,Gün,Günay,Gündeş,Gündoğan,Gündoğdu,Gündoğmuş,Gündüz,Gündüzalp,Güne,Günerdi,Güneren,Günermiş,Güneş,Günkağan,Gürbüz,Gürçay,Gürgen,Gürtürk,Güvenç,Güyük,Güzey,I,Iba,Idıkut,Iğrak,Ila,Ilaçın,Ilaçınbayluk,Ilgar,Ilımga,Ilkuş,Imga,Inakkulu,Inal,Inalçık,Inalçur,Inalbars,Inalbayat,Inalbeğ,Inalkoç,Inalöz,Inalurungu,Inan,Inanç,Inançalp,Inançapa,Inançbeğ,Inanççı,Inançu,Inançualp,Inançuapa,Inançubilge,Inançuçur,Inançukülüg,Inançyabgu,Indı,Irkıl,Irmak,Isığ,Isık,Işbara,Işbarabilge,Işbaraçıkan,Işbaratamgan,Işbaratarkan,Işbarateriştunga,Işbarayamtar,Işığ,Işık,Itak,Iyık,Iyıktağ,Iyış,Izay,İ,İçenbilge,İdikurt,İdikut,İdil,İğdir,İkiçitoyun,İkidemir,İkrek,İkti,İlçeke,İlçiboğa,İlçikedey,İlaçmış,İlaçtı,İlaldı,İlaldıbeğ,İlalmış,İlbaşı,İlbasmış,İlbastı,İlben,İlboğa,İldemir,İldeniz,İldoğan,İlek,İletmiş,İletti,İlgegü,İlgir,İlgirdi,İlgirmiş,İlgirtudun,İlınançı,İlkağan,İlkan,İlkatmış,İlkattı,İlkaya,İlkoca,İlkuş,İlkutadmış,İlli,İlötüken,İlteber,İlteriş,İltutku,İltutmuş,İltuttu,İltürgük,İltüzer,İlyığdı,İlyığmış,İmen,İnç,İnçboğa,İnel,İnge,İngeçi,İnözinençi,İpiışbara,İpişat,İpitulu,İrçik,İrik,İrinç,İrinçköl,İrkey,İrkin,İrnek,İrtiş,İsiyi,İstemi,İşboğa,İşkara,İtbert,İteçük,İterçi,İtil,İyituğrul,K,Kaban,Kabanbay,Kabşut,Kaçaç,Kaçanküke,Kaçkar,Kaçut,Kadak,Kadır,Kadırbilge,Kadırkan,Kağan,Kağanoğul,Kağarlık,Kakşaaçkı,Kalaç,Kalalduruk,Kalım,Kalımtı,Kalın,Kalıng,Kalınkaraaçkı,Kalkaman,Kalkan,Kalkankılıç,Kalmuk,Kalpas,Kam,Kambuktu,Kamçı,Kamır,Kamırtegin,Kan,Kana,Kanak,Kanaluk,Kanat,Kancı,Kançı,Kançora,Kandıbay,Kandemir,Kandurmuş,Kanelçi,Kanık,Kanımdı,Kanıtgan,Kanlı,Kanoğul,Kantoyun,Kanturalı,Kantüre,Kapağan,Kapak,Kapan,Kapgan,Kaplan,Kaplangerey,Kapsın,Kara,Karaaçkı,Karaalp,Karaarslan,Karaarslanbörü,Karaba,Karabakşı,Karabars,Karabayır,Karabıyık,Karaboğa,Karabölük,Karabörü,Karabudak,Karabuluk,Karabulut,Karaca,Karacaoğlan,Karaça,Karaçuk,Karaçur,Karademir,Karadoğan,Karadoğma,Karaevli,Karagöz,Karagüne,Karak,Karakağan,Karakaş,Karakızıl,Karakulagu,Karakun,Karakunaz,Karakurt,Karakuş,Karakuzu,Karaküyük,Karaman,Karaoğul,Karaokuy,Karasungur,Karategin,Karatoğma,Karaton,Karatoyun,Karatüken,Karavul,Karayülük,Karayağma,Karayan,Karayığaç,Karçıgay,Karçur,Kargın,Karguy,Karık,Karımış,Karınkağan,Karkın,Karlı,Karlık,Karluk,Karpak,Kartal,Kasık,Kasırga,Kasırku,Kasmış,Katı,Katık,Katkı,Katkay,Katku,Katmış,Kavşut,Kavul,Kavurt,Kay,Kaya,Kayaesrük,Kayan,Kaydu,Kaygısız,Kaygusuz,Kayı,Kayımtı,Kayın,Kayıtgan,Kayıtsu \t,Kaykan,Kaymas,Kaymış,Kaynak,Kayra,Kaysakık,Kaysıdı,Kaytak,Kaytmaz,Kazan,Kazanç,Kazgan,Kazıkurt,Kazılık,Kazılıkkoca,Kazuk,Kebek,KeğenKekmen ,Keldibeğ ,Kelgin ,Kençek ,Kenik,Kensiğ,Kerşin,Kereküçü,Keriaçarı,Kerik,Kerki,Kerskiç,Ketimurungu,Ketire,Ketkara,Ketkaratudun,Kettaş,Keyargun,Keyken,Kezik,Kılat,Kılıç,Kılıçarslan,Kılıçkalkan,kılıçkamçı,Kılıçkan,Kımızın,Kına,Kından,Kınık,Kınrul,Kınsun,Kıp,Kıpçak,Kıprıdı,Kıra,Kıraç,Kıraçata,Kırgı,Kırgıdı,Kırgız,Kırgu,Kırguy,Kıryağız,Kısak,Kıtay,Kıvılcım,Kıyagan,Kıyağanurungu,Kıyan,Kıyangüçü,Kıyanselçük,Kıyımtı,Kıyıntıtoyun,Kızık,Kızılalma,Kızılalmıla,Kızılarslan,Kızılboğa,Kızılbörü,Kızılelma,Kızılkurt,Kiçgine,Kilter,Kiminsü,Kimintüre,Kindoğmuş,Kinsin,Kirti,Kişecik,Kiten,Kitir,Kobulsun,Kobuz,Koç,Koçak,Koçgar,Koçkar,Koçun,Koçungar,Koçunkar,Koğuş,Konat,Konçak,Koldaş,Kondubay,Konuk,Konur,Konuralp,Konurbörü,Konurkoca,Konurkurt,Kopuz,Korkağan,Korkut,Korla,Korlaelçi,Koru,Kosan,Koskaman,Koşu,Koşuk,Koşulgan,Koşututuk,Kotan,Kotantuğrul,Kotku,Kozar,Kozuçak,Kök,Kökbilgekan,Kökboğa,Kökbudak,Kökçü,Köklü,Köktürk,Köküskaya,Kökyük,Kölbilge,Kölbilgekan,Kölirkin,Kölkağan,Költegin,Kömen,Könder,Könüdiri,Köp,Körü,Körük,Körüyük,Körpeoğul,Kösemen,Kövenç,Közemiş,Közünçü,Ku,Kuba,Kubaçakırca,Kubılay,Kubuz,Kuçan,Kuçursu,Kudabıdın,Kudatmış,Kuduğubatur,Kukun,Kulagu,Kulakara,Kulan,Kulanarslan,Kulapa,Kulapaurungu,Kulbak,Kulbert,Kuldurak,Kulmas,Kulpa,Kuluç,Kulunkara,Kumandur,Kumararslan,Kumaşbay,Kumuk,Kun,Kunçuk,Kunan,Kunanbay,Kunaz,Kuncuk,Kunu,Kur,Kurbas,Kurç,Kurça,Kurçdemir,Kurçer,Kurçu,Kurgan,Kurla,Kurlaelçi,Kurman,Kursul,Kurşun,Kurt,Kurtçu,Kurtoga,Kurtul,Kurtulmuş,Kurtulur,Kurtuluş,Kuruç,Kuruçdemir,Kuruğşın,Kurum,Kurumçuoğul,Kuşuk,Kut,Kutaçun,Kutalmış,Kutan,Kutbulan,Kutbuldu,Kutbulmuş,Kutdağ,Kutkan,Kutku,Kutlu,Kutlualp,Kutlubağatarkan,Kutlubeğ,Kutluboğa,Kutlubört,Kutluçigşi,Kutludemir,Kutludemirtayak,Kutludurmuş,Kutlukağan,Kutlukaya,Kutluşat,Kutlutaş,Kutlutayak,Kutlutegin,Kutlutunga,Kuttağ,Kutulmuş,Kutuzurungu,Kuyakuz,Kuyaş,Kuz,Kübeyaruk,Küç,Küçdemir,Küçekül,Küçet,Küçkara,Küçlü,Küçlübilge,Küçlütegin,Küçtegin,Küdaruk,Küdarukbeğ,Küke,Kül,Külbilge,Külçur,Küldürtey,Külegen,Kültegin,Kültudun,Külü,Külüçur,Külük,Külükapa,Külükbilge,Külükçur,Külükınanç,Külüksengün,Külüktutuk,Külükurungu,Kün,Künbermiş,Künç,Künçtutuk,Küntoğsu,Küpe,Kür,Kürbeği,Kürboğa,Kürebir,Küregen,Kürgen,Kürkan,Kürşat,Kürtürk,Küten,Kütey,Küvçü,Küyük,Küzençik,M,Makaraç,Mamak,Mamatçın,Mangıt,Masar,Masmadar,Mayınsık,Maytalman,Mehmetçik,Meken,Mekilinkurça,Mençik,Mengü,Mengüberdi,Mengüçek,Mengüdemir,Mengükağan,Mengükulu,Mengütegin,Menli,Menlidemir,Mergen,Merkit,Mete,Mınar,Mindemir,Minkara,Monçuk,Mongul,Mongulboğa,Motun,Moyunçur,Mukan,Muncuk,Munduzakın,Munsuz,Muyan,Müge,O,Ocak,Oçak,Oçur,Odçubuyruk,Odguç,Odmuş,Oglançur,Oğan,Oğla,Oğlumuş,Oğrak,Oğramış,Oğul,Oğulçak,Oğulasuk,Oğulbars,Oğultarkan,Oğur,Oğurtegin,Oğuş,Oğuz,Oğuzbilge,Ok,Okçu,Oktar,Oktay,Okuş,Okutgan,Olakçı,Olca,Olcay,Olcaytu,Olçaytu,Olgun,Oluç,On,Onbeği,Ongun,Ontutuk,Opuz,Opuzlu,Or,Orak,Ordu,Ordubeğ,Orduk,Orkağan,Orkan,Orkaya,Orkun,Orkunşat,Orsulay,Orunçak,Osuğ,Otamış,Otçu,Otçuboğa,Otkakönmişkılıç,Otman,Otmuş,Otuç,Otuzoğlan,Oyrat,Ozan,Ozman,Ozmuş,Ozmuştegin,Ozutgan,Ö,Öçürgen,Öçgel,Ödgek,Ödül,Öge,Ögeçik,Ögedey,Ögrüz,Ögrüzdemir,Ögreyük,Öğdülmüş,Öğrünç,Öğrünçe,Öğünç,Öğüt,Öğütçü,Öke,Ökrünç,Öküş,Öküşaçkı,Öküşkaraaçkı,Ölütçü,Öngü,Örebört,Örpen,Ötemiş,Ötük,Ötüken,Ötükendemir,Ötünçdemir,Övünç,Öyke,Öyük,Öz,Özapa,Özbek,Özbilge,Özdemir,Özge,Özmüş,Özüdoğdu,Özüdoğru,Özürgen,Özyeğenalpturan,P,Paşa,Paşayiğit,Pay,Payandur,Paypiçen,Peçenek,Penge,Peymey,Pınar,Poyraz,S,Sabıboğa,Sabınsatı,Sabutay,Sabutu,Saçu,Sağanak,Sağdıç,Sağlık,Sağnak,Sagağul,Sagımbay,Sagu,Sagun,Sagur,Salgar,Salgur,Salman,Salu,Salur,Salurkazan,Sançar,Sançmış,Sandal,Sangı,Sangır,Sangun,Sanmış,Sarı,Sarıbaş,Sarıbörü,Sarıçır,Sarıkulmas,Sarıkurt,Sarp,Sartak,Saru,Sarukan,Saruyatı,Sasıboğa,Sasıkutlukaya,Satılmış,Satmış,Savcı,Savçı,Sayın,Sayboğa,Sayda,Sayyaruk,Sebükkölerkin,Sebüktegin,Seçkin,Seğrek,Sekinçkara,Selçe,Selçen,Selçik,Selçük,Selek,Selenge,Semenek,Semiçe,Sençer,Senge,Sengekteş,Senger,Sengün,Sengür,Sengüy,Sengüyara,Sengüytudun,Sepinli,Sevinç,Sevindik,Seyhun,Seykün,Seymen,Sıla,Sılan,Sılang,Sılka,Sındıran,Sıngkı,Sınkı,Sırba,Sırım,Sısır,Sışıdu,Sıyrım,Silig,Sinier,Soğansarı,Sokta,Soktuelçi,Sokulgan,Soma,Somaçı,Soyan,Soyar,Sökmen,Subar,Suk,Suma,Sumaçı,Sunak,Sunduru,Sungur,Sunkişi,Suyunçuk,Suyurgal,Suyurkatmış,Sübaşı,Süçür,Südeş,Sülü,Süledi,Sülemiş,Süler,Süngekteş,Süngü,Süngüler,Süngüş,Süngüşür,Sünüş,Süsmen,Süyen,Süyünçük,Süyündük,Süyürgatmış,Ş,Şağılar,Şalçak,Şalçı \tŞaman,Şangun,Şat,Şıban,Şöklü,Şu,Şukağan,T,Tabay,Tabgaç,Tabgaçyeke,Tabın,Tabırtı,Tabrak,Tabulgu,Taçam,Tadar,Tadgun,Tadık,Tadıkçur,Tadkun,Tadu,Tağ,Tagay,Takıcık,Takışkaya,Talan,Talguk,Talıkı,Talıman,Talkık,Talkılıç,Talu,Taman,Tamantarkan,Tamar,Tamduk,Tamga,Tamgacı,Tamgalı,Tamgalık,Tamgantarkan,Tamır,Tamur,Tan,Tanguk,Tangut,Tanık,Tanışman,Tanrıkulu,Tanrıkut,Tanrıverdi,Tanrıvermiş,Tanyu,Tapar,Tapdı,Tapılgu,Tapılguç,Tapış,Tapmış,Taprak,Tapu,Tapusak,Tapuş,Tarı,Tara,Taragay,Taran,Taraskülüg,Tarbın,Tarbış,Tardu,Tarıçı,Tarıçıbeğ,Tarım,Tarın,Tarkan,Tarkat,Tarmak,Tarman,Tarsuk,Taş,Taşkan,Tatar,Tatık,Tatuş Tay,Tay,Tayak,Tayanç,Tayanı,Taybilge,Tayboğa,Taybu,Taydık,Taydıkelçi,Taygun,Tayık,Tayınçak,Tayışma,Taylan,Taylanyiğit,Taypura,Taysan,Tayşı,Tayun,Tayüge,Tegin,Tegir,Tegrenç,Tekeli,Tekeş,Tekiş,Tekir,Teküder,Teleboğa,Telegey,Telengit,Temdilik,Temen,Temiçi,Temiş,Temren,Temüçin,Temüke,Tengiz,Tengribolmış,Tengrikulu,Tengüt,Tenli,Tenliapa,Tepiş,Terdike,Terek,Terken,Tetik,Tezginç,Tığrak,Tınbeğ,Tınmış,Tısak,Tike,Tilbe,Tilek,Tinç,Tinesi,Tiregü,Tirek,Tiri,Tirik,Tobuk,Tobula,Toğma,Toğman,Toğsun,Togay,Tok,Tokademir,Tokak,Tokay,Tokaydemir,Tokdoğan,Tokkan,Toklukdemir,Toklutunga,Toksaba,Toksı,Toksın,Toksu,Toksuçiğil,Toksurmuş,Tokta,Toktakaya,Toktamış,Toktamışgerey,Toktaş,Toktay,Toktu,Tokumak,Tokuş,Tolaba,Tolmuş,Tolu,Toluktüge,Tolum,Tolun,Toluntegin,Tonguç,Tongut,Tonlutunga,Tonma,Tonmabakşı,Tonraesim,Tonrasemik,Tonyukuk,Topçan,Toprak,Toraman,Torumtay,Tosun,Toygar,Toygun,Toynak,Toyun,Toyunçuk,Tökmen,Tölek,Tölekkaya,Tönke,Törapa,Töre,Töreci,Töredi,Töreli,Törpe,Törtaba,Törü,Törücü,Törülü,Törüngey,Töşek,Tuçayan,Tudun,Tudunyamtar,Tugayörük,Tuğ,Tuğçu,Tuğluk,Tuğlukdemir,Tuğlukşat,Tuğra,Tuğrul,Tuğrulbeğ,Tuğrulca,Tuğşat,Tuğtegin,Tuğur,Tuka,Tukademir,Tula,Tulaboğa,Tulu,Tulunbeğ,Tuluntay,Tuman,Tumlumınar,Tumtur,Tumur,Tun,Tunç,Tundar,Tunga,Tungaalp,Tungakağan,Tungatar,Tungategin,Tungaturan,Tunyabgu,Tupulgan,Tura,Turagay,Turak,Turalı,Turan,Turancı,Turançı,Turatutuk,Turbay,Turgay,Turgul,Turgut,Turkun,Turmuş,Turpan,Tursun,Turu,Turuk,Turumçan,Turumtay,Turunçan,Turunday,Tuşta,Tutırga,Tuttarkan,Tutuk,Tutuş,Tuygan,Tuygu,Tuygun,Tuynak,Tuyun,Tüge,Tüger,Tükel,Tükele,Tüken,Tükrünç,Tüksün,Tükün,Tülek,Tülekdemir,Tülük,Tümen,Tümenbeği,Türçe,Türçü,Türe,Türk,Türkçü,Türkeş,Türkmen,Türkyiğit,Türlük,Tüşdemir,Tüşümen,Tüz,Tüzbayküçbars,Tüzçü,Tüzlü,Tüzlük,Tüzmüş,Tüzük,Tüzün,U,Ubaca,Uçarkam,Udar,Udgurmuş,Udmuş,Udun,Udur,Ugan,Uganverdi,Ugraç,Uğrak,Uğur,Ukuş,Ulaş,Uldız,Ulu,Uluç,Uluçum,Uluğ,Uluğerkin,Uluğışbara,Uluğkeyken,Uluğşat,Uluğtarkan,Uluğtürk,Ulun,Uma,Umar,Umuçu,Umunç,Umur,Umut,Unagan,Uragan,Ural,Urbeğ,Urga,Uruğ,Urul,Urungu,Urungukülük,Urungukülüktok,Urunguşat,Urungutudun,Uruoğlan,Uruş,Uruz,Usına,Usuk,Usun,Usuna,Uşun,Uşunkoca,Utar,Utsangun,Utuş,Utuz,Uygur,Uz,Uzamış,Uzçur,Uzluk,Ü,Üçoğul,Üçok,Üçün,Üçünkülüg,Ülügbulmuş,Ülügdü,Ülegür,Ülgen,Ülkü,Ülkücü,Ülkülü,Ülker,Ürün,Ürüng,Ürüngkaş,Ürüngkuş,Üregir,Üstün,Üşe,Üyründü,Y,Yabaku,Yabasun,Yabgu,Yabgudirek,Yablak,Yablaksarı,Yabunsu,Yabuz,Yaçankır,Yadık,Yağan,Yağantegin,Yağıbasan,Yağısıyan,Yağız,Yağlakar,Yağlakarata,Yağlakarkağan,Yağlakarkağanata,Yağlıbay,Yağma,Yağmış,Yağmur,Yağrınçı,Yağuk,Yakan,Yakşı,Yalçın,Yaldrık,Yaldruk,Yalım,Yalımkaya,Yalın,Yalınca,Yalınguk,Yalsaka,Yalt,Yaltaçuk,Yaltapar,Yaltkaya,Yaman,Yamar,Yamgur,Yamı,Yamtar,Yanal,Yanbatu,Yangak,Yangakınal,Yangıl,Yangılarslan,Yankı,Yapağulu,Yapança,Yaparlı,Yapınç,Yapınçak,Yaplaksarı,Yaplış,Yarıcı,Yarındak,Yarkan,Yarkaya,Yarkın,Yarlık,Yarmakan,Yaroğul,Yarp,Yartaçuk,Yaruk,Yaruktegin,Yarukyıldız,Yasa,Yasacı,Yasadur,Yasağul,Yasalı,Yasıç,Yasmıl,Yaşak,Yaşar,Yaşarşat,Yaşın,Yaşmut,Yaşuk,Yatgak,Yatıgma,Yavlakarslan,Yavuz,Yayık,Yazı,Yazıcı,Yazır,Yazgan,Yazgır,Yazuksuz,Yeğen,Yeğençik,Yeğinsilik,Yeke,Yeketaş,Yeketaşoğul,Yelekçi,Yelgek,Yelkin,Yerdeş,Yetigen,Yetmen,Yetrim,Yezek,Yezirtulga,Yıba,Yığaç,Yığım,Yığın,Yılbars,Yıldır,Yıldırım,Yıldız,Yıldızcı,Yıldızkağan,Yıldızlı,Yılmaz,Yımış,Yınal,Yırım,Yışık,Yiğbört,Yiğen,Yiğençur,Yiğenek,Yiğetmiş,Yiği,Yiğit,Yimek,Yinge,Yisüntuba,Yitik,Yitmiş,Yizek,Yolak,Yolakbarçın,Yolay,Yoldruk,Yolduz,Yonga,Yongucu,Yorçu,Yoruk,Yosmut,Yörgenç,Yörük,Yubuğ,Yuğruş,Yul,Yula,Yulak,Yulçuk,Yuldruk,Yuluğ,Yuluğtegin,Yumak,Yumgak,Yumru,Yumruk,Yumşak,Yungu,Yunlu,Yunlukoca,Yupuğ,Yurtçu,Yuyruk,Yüce,Yügesir,Yügnek,Yügrükbilge,Yükünç,Yüküngen,Yülek,Yülükarslan,Yürgeyük,Yürükalp,Yüzbeği";

            Console.WriteLine("Eminmisin ");
            Console.ReadLine();
            _session = ConfigurationItem.Instance.OpenSession();
            ConfigurationItem.CreateDb();
            _session.BeginTransaction();
            var c1 = CreateCategory("Toplumsal");
            var c2 = CreateCategory("Bilgisayar");
            var c3 = CreateCategory("Diğer");
            var c4 = CreateCategory("Spor");
            var c5 = CreateCategory("Siyaset");
            var c6 = CreateCategory("Elektrik-Elektronik");
            _session.Transaction.Commit();
            var adList = adlar.Split(',').Take(2).ToList();
            var soyadList = adlar.Split(',').Take(2).ToList();

            var k = 0;
            foreach (var ad in adList.ToList())
            {
                k++;
                foreach (var soyad in soyadList.ToList())
                {
                    if (ad == soyad)
                        continue;

                    var user = CreateUser((ad.Trim() + "." + soyad.Trim()).ToLower(), "121212", ad.Trim().ToLower() + "." + soyad.Trim().ToLower() + "@mesutcakir.com.tr", ad.Trim(), soyad.Trim().ToUpper());
                    foreach (var liker in UserList.Take(15))
                    {
                        CreateUserLike(user, liker);
                        CreateUserFollow(user, liker);
                    }
                    AddProject(user, c1);
                    AddProject(user, c2);
                    AddProject(user, c3);
                    AddProject(user, c4);
                    AddProject(user, c5);
                    AddProject(user, c6);
                    Console.WriteLine(k + "-)" + (ad.Trim() + "." + soyad.Trim()).ToLower() + " Tamamlandı.");
                }

            }
            _session.BeginTransaction();
            var mcakir = CreateUser("mesutcakir", "121212", "cakir@mesutcakir.com.tr", "Mesut Murat", "ÇAKIR");

            foreach (var liker in UserList.Take(1000))
            {
                CreateUserLike(mcakir, liker);
            }
            for (int i = 0; i < 15; i++)
            {
                AddProject(mcakir, c1);
                AddProject(mcakir, c2);
                AddProject(mcakir, c3);
                AddProject(mcakir, c4);
                AddProject(mcakir, c5);
                AddProject(mcakir, c6);
            }
            _session.Transaction.Commit();
            Console.WriteLine("Veritabanı oluşturuldu.");

            Console.ReadLine();
        }

        private static ProfileFollow CreateUserFollow(User user, User fUser)
        {
            var follow = new ProfileFollow()
            {
                User = user,
                Follower = fUser
            };
            _session.Save(follow);
            return follow;
        }
        private static ProjectFollow CreateProjectFollow(Project project, User fUser)
        {
            var follow = new ProjectFollow()
            {
                Project = project,
                Follower = fUser
            };
            _session.Save(follow);
            return follow;
        }
        private static ProjectCategory CreateCategory(string name)
        {
            var category = new ProjectCategory
                               {
                                   Description = "",
                                   Name = name
                               };
            _session.Save(category);
            return category;
        }
        private static UserLike CreateUserLike(User process, User user)
        {
            var like = new UserLike()
                           {
                               User = user,
                               Processor = process
                           };
            _session.Save(like);
            return like;
        }
        private static ProjectLike CreateProjectLike(Project project, User user)
        {
            var like = new ProjectLike
                           {
                               Project = project,
                               Processor = user
                           };
            _session.Save(like);
            return like;
        }
        private static User CreateUser(string userName, string password, string email, string firstName, string surname)
        {
            var rnd = new Random();
            var user = new User
                           {
                               Password = password,
                               Username = userName,
                               MailAdress = email,
                               IsActive = true,
                               FirstName = firstName,
                               LastName = surname,
                               MyLikes = new List<Like>(),
                               BirthDay = DateTime.Now,
                               City = SiteConstants.Cities[rnd.Next(0, SiteConstants.Cities.Count - 1)]
                           };
            _session.Save(user);
            UserList.Add(user);
            return user;
        }
        private static Comment CreateComment(User user, Project project, string comment)
        {
            var newComment = new Comment
                                 {
                                     User = user,
                                     CommentText = comment,
                                     IsActive = true,
                                     Project = project
                                 };
            _session.Save(newComment);

            return newComment;
        }
        private static Angel CreateAngel(string name, string desctiption, Project project)
        {
            var angel = new Angel
                            {
                                Name = name,
                                Description = desctiption,
                                Project = project
                            };
            _session.Save(angel);
            return angel;
        }
        private static Project AddProject(User user, ProjectCategory category)
        {
            _session.BeginTransaction();

            var project = new Project
                              {
                                  Category = category,
                                  Description =
                                      "David Mahan ın bu sitedeki bisiklet canlandırma projesi ile bisikletinizi yük taşıyan bir taşıt haline getirebilirsiniz. Özellikle evinde kesici, kaynak yapan vb aletleri olanlar yada atölyesi olanlar için güzel bir proje olabilir. Eski bisikletinizi değerlendirmek isterseniz bu proje size yol gösterecektir.\r\n        \r\n        Proje içerisinde anlatıma çok gerek yok, fotoğraflar herşeyi açıklıyor zaten, fakat kabaca özetlersek;\r\n        Pinokyo tarzı bisikletlerin ortadan katlanma özelliği sayesine bisikleti 2 parça haline getirip araya büyük bir yük kasasını monte ediyoruz.\r\n        Bunu yaparken de kasanın çerçevesini ve bisiklete ön ve arkadan bağlama yerlerini kaynakla monte ediyoruz. Bisiklet kolay takılıp sökülebilir olmalı. Yani ön ve arka bölüm birbirinden bağımsız olabilmeli ki pratik bir şekilde bisikletin ön kısmını arka kısımdan ayırıp bir markete yada pazar yerine dalalım.\r\n        \r\n        Projenin orijinal sitesinde daha fazla fotoğraf mevcut. Dileyenler buraya tıklayarak siteyi ziyaret edebilir.\r\n        http://fixedgeargallery.com/contest/grocerygetter/DavidMahan.htm",
                                  Name = user.FirstName + " 'in " + category.Name + " Projesi",
                                  User = user,
                                  Likes = new List<Like>(),
                                  Angels = new List<Angel>()
                              };
            foreach (var u in UserList.Take(100))
            {
                CreateProjectFollow(project, u);
                CreateProjectLike(project, u);
                CreateComment(u, project, "Ben {0}, Ellerinize sağlık güzel bir proje olmuş. Başarılarınızın devamını dilerim.".FormatWith(user.FirstName + " " + user.LastName));
            }
            _session.Save(project);

            return project;
        }
    }
}
